// 模板管理路由

package apiWeb

import (
	template "ZHONGYIHANGYAN/business/template"
	"fmt"

	"ZHONGYIHANGYAN/web"

	requset "ZHONGYIHANGYAN/bean/request"

	"github.com/gin-gonic/gin"
)

func (api *Api) TemplateRouters(g *gin.RouterGroup) {
	routerG := g.Group("/template")
	{
		// 获取模板列表
		routerG.POST("/getTemplateList", web.NewWebRouter(api.getTemplateList).Func)
		// 添加、修改模板列表
		routerG.POST("/addOrUpdateTemplate", web.NewWebRouter(api.addOrUpdateTemplate).Func)
		// 删除模板
		routerG.POST("/deleteTemplate", web.NewWebRouter(api.deleteTemplate).Func)
		// 复制模板
		routerG.POST("/copyTemplate", web.NewWebRouter(api.copyTemplate).Func)
		// 查看模板详情
		routerG.POST("/getTemplateDetail", web.NewWebRouter(api.getTemplateDetail).Func)
	}
}

func (api *Api) InitTemplateRouter() error {
	api.templateManage = template.Manage()
	api.web.RegRouters(api.TemplateRouters)
	return nil
}

// 获取模板列表
func (api *Api) getTemplateList(c *gin.Context, replayData *interface{}) error {
	query := requset.GetTemplateListQuery{}
	if err := api.web.GetPayload(c, &query); err != nil {
		return err
	}
	infoList, err := api.templateManage.GetTemplateList(&query)
	if err != nil {
		return err
	}
	*replayData = infoList
	return nil
}

// 添加、修改模板列表
func (api *Api) addOrUpdateTemplate(c *gin.Context, replayData *interface{}) error {
	info := requset.AddOrUpdateTemplateQuery{}
	if err := api.web.GetPayload(c, &info); err != nil {
		return err
	}
	if err := validateParam(info); err != nil {
		return err
	}
	if err := api.templateManage.AddOrUpdateTemplate(&info); err != nil {
		return err
	}
	*replayData = info
	return nil
}

// 删除模板
func (api *Api) deleteTemplate(c *gin.Context, replayData *interface{}) error {
	query := requset.DeleteTemplateQuery{}
	if err := api.web.GetPayload(c, &query); err != nil {
		return err
	}
	if len(query.TemplateIds) == 0 {
		return fmt.Errorf("请传入需要删除的模板id")
	}
	if err := api.templateManage.DeleteTemplate(query.TemplateIds); err != nil {
		return err
	}
	return nil
}

// 复制模板
func (api *Api) copyTemplate(c *gin.Context, replayData *interface{}) error {
	query := requset.DeleteTemplateQuery{}
	if err := api.web.GetPayload(c, &query); err != nil {
		return err
	}
	if len(query.TemplateIds) == 0 {
		return fmt.Errorf("请传入需要复制的模板id")
	}
	if err := api.templateManage.CopyTemplate(query.TemplateIds); err != nil {
		return err
	}
	return nil
}

// 查看模板详情
func (api *Api) getTemplateDetail(c *gin.Context, replayData *interface{}) error {
	query := requset.GetTemplateDetailQuery{}
	if err := api.web.GetPayload(c, &query); err != nil {
		return err
	}
	if err := validateParam(query); err != nil {
		return err
	}
	info, err := api.templateManage.GetTemplateDetail(query.TemplateId)
	if err != nil {
		return err
	}
	*replayData = info
	return nil
}
